package com.bph.user.mapper;

import com.bph.commons.pojo.Permission;
import com.bph.commons.pojo.Store;
import com.bph.commons.pojo.User;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface UserMapper {
    /**
     *根据邮箱、密码查找user
     */
    public User selectUserByPassword (User user);

    /**
     * 根据邮箱登录
     */
    public User selectUserByMail (User user);


    /**
     * 注册店长时根据邮箱查找
     * @param user
     * @return
     */
    public User SelectUserByMail (User user);

    /**
     * 注册店长时新建一个店铺
     */
    int insertStore();
    //再获取到新店铺的id
    Store selectNewStoreId();
    /**
     * 插入user  店长注册
     * @param user
     * @param store_id
     * @return
     */
    int insertManagerByMail(String user_mail,String user_password, int store_id);
    /*
    注册店长时对于user_role表的添加
     */
    User selectUserIdByMail(String user_mail);
    int insertUserRole(int user_id);

    /**
     * 根据邮箱修改密码  忘记密码
     * @param user_mail
     * @param new_password
     * @return
     */
    int updatePasswordByCode(String user_mail, String new_password);

    /**
     *根据邮箱修改密码
     */
    int updatePasswordByMail(String user_mail, String user_password, String new_password);

    /**
     * 根据邮箱查询权限
     * @param user_mail
     * @return
     */
    List<Permission> selectPermissionByMail(String user_mail);



    /**
     *修改用户信息
     * @param user
     * @return int
     */
    int updateUserByMail(User user);

    /**
     * 获取用户信息
     */
    public User getUserByMail(String user_mail);

    /**
     * 根据门店id获取员工列表
     */
    public List<User> getUserByStoreId (User user);

    /**
     * 用于查询用户时获取用户表长度
     * @param store_id
     */
    int getUserLength(int store_id);

    /**
     * 用于根据id和title查询用户
     * @param user_id
     * @param user_title
     * @param store_id
     * @return
     */
    List<User> selectUserById(int user_id, String user_title, int store_id);

    /**
     * 用于获取对应数量列的数据
     * @param user_name
     * @param user_title
     * @param store_id
     * @param limit_index
     * @param limit_length
     * @return
     */
    List<User> selectUserByName(String user_name, String user_title, int store_id, int limit_index, int limit_length);

    /**
     *删除用户三步走 user_role user_perference user
     */
    int deleteUserById(int user_id);
    void deleteUserRoleById(int user_id);
    void deleteUserPreferenceById(int user_id);

    /**
     * 修改用户基础信息所用
     */
    int updateUserById(User user);
    User getUserById(User user);

    /**
     * 添加普通员工，默认密码123456
     * @param user
     * @return
     */
    int insertEmployeeByMail(User user);
    int insertEmployeeUserRole(int user_id);


}
